package com.gxa.p2p.service;

import com.gxa.p2p.common.exception.MyException;
import com.gxa.p2p.pojo.Borrowuser;
import com.gxa.p2p.pojo.Investrecord;
import com.gxa.p2p.pojo.Mark;
import com.gxa.p2p.pojo.MarkBrrowUserVo;
import com.gxa.p2p.pojo.Markclass;
import org.springframework.stereotype.Service;

import java.sql.Timestamp;
import java.util.List;
import java.util.Map;

/**
 * @author Bei
 * @date 2021/10/26 16:23
 */
public interface MarkService {
    /**
     *廖泓宇
     * 接口13 中标管理的包含模糊的全查询接口（返回字段不同）
     */
    List<Map> findAllLikeByPageZB(String legalName, String phone, Integer page, Integer size);

    /**
     *廖泓宇
     * 接口13.1 中标管理的包含模糊的全查询接口（返回字段不同）
     */
    Integer findAllLikeByPageZBCount(String legalName, String phone);


    /**
     *廖泓宇
     * 接口15 满标复审的包含模糊的全查询接口（返回字段不同）
     */
    List<Map> findAllLikeByPageFS(String legalName, String phone, Boolean progress, Integer page, Integer size);

    /**
     *廖泓宇
     * 接口15.1 满标复审的包含模糊的全查询接口（返回字段不同）
     */
    Integer findAllLikeByPageFSCount(String legalName, String phone, Boolean progress);

    /**
     *廖泓宇
     * 接口17 所有借款标的包含模糊的全查询接口（返回字段不同）
     */
    List<Map> findAllLikeByPageAJ(String legalName, String phone,Integer page, Integer size,String state1,String state2,String state3,String state4,String state5,String state6,String state7,String state8,String state9,String state10);
    List<MarkBrrowUserVo> findAllLikeByPageAJVO(String legalName, String phone, String state1, String state2, String state3, String state4, String state5, String state6, String state7, String state8, String state9, String state10);

    /**
     *廖泓宇
     * 接口17.1 所有借款标的包含模糊的全查询接口（返回字段不同）
     */
    Integer findAllLikeByPageAJCount(String legalName, String phone,String state1,String state2,String state3,String state4,String state5,String state6,String state7,String state8,String state9,String state10);


    /**
     *廖泓宇
     * 接口14 标的下架接口撤标
     */
    void ceMark(Long id,String remarks3);

    /**
     *廖泓宇
     * 接口16 标的复审接口
     */
    void DoubleExamMark(Long id,Boolean state,String remarks2);

    /**
     *廖泓宇
     * 标的修改
     */
    void updateZB(Mark mark);

    /**
     *廖泓宇
     * 类别修改
     */
    void updateMarkClass(Markclass markclass);

    /**
     * 杨述波
     * 新增借款标提交
     * @param mark
     */
    public void subMard(Mark mark) throws MyException;

    /**
     * 杨述波
     * 草稿借款标
     * @param mark
     */
    public void tempMard(Mark mark) throws MyException;

    /**
     * 接口6
     * 新标维护页面全查
     * 杨述波
     * @param markName
     * @param debtor
     * @param phone
     * @param state
     * @param page
     * @param size
     * @return
     */
    List<Map> findAllLikeByPageByXW(String markName,String debtor,String phone,String state,Integer page,Integer size);


    /**
     * 接口6的总条数
     * @param markName
     * @param debtor
     * @param phone
     * @param state
     * @return
     */
    Integer findAllLikeXWCount(String markName,String debtor,String phone,String state);


    /**
     * 接口9
     * 借款审核全查询
     * 杨述波
     * @param debtor
     * @param phone
     * @param diYaType
     * @param page
     * @param size
     * @return
     */
    List<Map> findAllLikeByPageJK(String debtor,String phone,String diYaType,Integer page,Integer size);

    /**
     * 接口9总条数
     * @param debtor
     * @param phone
     * @param diYaType
     * @return
     */
    Integer findAllLikeJKCount(String debtor,String phone,String diYaType);


    /**
     * 接口11
     * 标的上架全查询
     * 杨述波
     * @param debtor
     * @param phone
     * @param diYaType
     * @param page
     * @param size
     * @return
     */
    List<Map> findAllLikeByPageSJ(String debtor,String phone,String diYaType,Integer page,Integer size);


    /**
     * 接口11的总条数
     * @param debtor
     * @param phone
     * @param diYaType
     * @return
     */
    Integer findAllLikeSJCount(String debtor,String phone,String diYaType);

    /**
     * 按照id查询
     * 杨述波
     * @param id
     * @return
     */
    public Mark findById(Long id) throws MyException;

    /**
     * 通过id删除
     * @param id
     */
    public void deleteById(Long id) throws MyException;

    /**
     * 初审业务
     * 杨述波
     * @param id
     * @param path
     * @param reason
     */
    public void checkFirstById(Long id,Boolean path,String reason);

    /**
     *廖泓宇
     * 接口18 投资记录表模糊查询
     */
    List<Investrecord> findAllLikeByPageTZ(String phone, String name, Timestamp from, Timestamp to, Integer page, Integer size, String state1, String state2, String state3, String state4, String state5, String state6);
    List<Investrecord> findAllLikeByPageTZExport(String phone, String name, Timestamp from, Timestamp to, String state1, String state2, String state3, String state4, String state5, String state6);

    /**
     * 标的上架维护时的数据填充
     * 业务
     * 1.数据修改
     * 2.上架时间判断做出状体位的修改
     * @param mark
     */
    public void fillById(Mark mark);
    /**
     *廖泓宇
     * 接口18.1 count
     */
    Integer findAllLikeByPageTZCount(String phone, String name, Timestamp from, Timestamp to, String state1, String state2, String state3, String state4, String state5, String state6);


    /**
     * 首页统计
     * 需要返回   1.总借款数  万元   double
     * 2.昨日总借款数  万元  double
     * @return
     */
    public Map totalBorrow();


    /**
     * 今日代还款人数
     * @return
     */
    public Integer todayBackMoney();

    /**
     * 最近30天的投资
     */
    List<Double> totalInvestNearMonth();



    Borrowuser findBorrowById(Long id);






}
